<?php
namespace App\Core\Entity\Auth;

use App\Core\Entity\BaseEntity;

/**
 * Auth 抽象类
 */
abstract class Factory extends BaseEntity
{

    /**
     * 用户数据 auth key （\App\Core\Entity\Auth\UserEntity）
     */
    const AUTH_KEY_USER = 'auth:user';

    /**
     * 用户数据 auth key （\App\Core\Entity\Auth\PolicyEntity）
     */
    const AUTH_KEY_POLICY = 'auth:policy';

    /**
     * 授权token
     *
     * @var string
     */
    protected $authToken;

    /**
     * 设置授权token
     *
     * @return $this
     */
    public function setAuthToken($authToken)
    {
        $this->authToken = $authToken;
        return $this;
    }

    /**
     * 获取授权token
     *
     * @return string
     */
    public function getAuthToken()
    {
        if (! $this->authToken) {
            $this->authToken = request()->header('auth-token');
        }
        return $this->authToken;
    }

    /**
     * 验证授权token是否存在
     *
     * @return boolean
     */
    public function isValidAuthToken()
    {
        return ! empty($this->authToken);
    }

    /**
     * 同步数据到 auth
     *
     * @return void
     */
    abstract public function save();
}
